<?php

class OrganizationsController extends AppController {
	var $name = 'Organizations';
	//var $components = array ('Pagination');
	var $helpers = array('Html','Form','Accessibility','Pagination', 'Associations', 'Ajax', 'Input');
	
	
	function index() {
		$this->Organization->paginate = array('limit' => 15, 'page' => 1);
		$title = 'Entidades';
		$this->set('title', $title);
		$this->set('pageTitle', $title);
		$organizations = $this->Organization->find('all');
		$this->set('organizations', $organizations);
	}

	function view( $id=null ) {
		if (!$id) $this->redirect('/organizations');
		$title = 'Visualizar entidade';
		$this->set('title', $title);
		$this->set('pageTitle', $title);

		$this->Organization->id = $id;
		$this->set('organization', $this->Organization->read());
	}

	function add() {
		$title = 'Cadastrar entidade';
		$this->set('title', $title);
		$this->set('pageTitle', $title);

		$this->set('estados', $this->Organization->Cidade->Estado->find('list', array('fields'=>array('id','nome'))));
		$this->set('cidades', $this->Organization->Cidade->find('list', null));

		if (!empty($this->data)) {
			$logo = $this->params["data"]["Organization"]["logo"];
			if($logo["size"]>0){
				$fileData = fread(fopen($logo["tmp_name"],"r"),$logo["size"]);
				$this->params["data"]["Organization"]["logo"] = $fileData;
			}else{
				unset($this->params["data"]["Organization"]["logo"]);
			}

			// Validacao
			if($this->data["Organization"]["nome"] == null) {
				$_SESSION['mensagem']['error'][] = 'O campo Nome é obrigatório.';
			}
			if($this->data["Organization"]["estado"] == null) {
				$_SESSION['mensagem']['error'][] = 'O campo Estado é obrigatório.';
			}
			if($this->data["Organization"]["cidade_id"] == null) {
				$_SESSION['mensagem']['error'][] = 'O campo Cidade é obrigatório.';
			}
			if($this->data["Organization"]["email"] == null) {
				$_SESSION['mensagem']['error'][] = 'O campo e-mail é obrigatório.';
			}
			if($this->data["Organization"]["descricao"] == null) {
				$_SESSION['mensagem']['error'][] = 'O campo Descrição é obrigatório.';
			}

			if (!empty($this->data["Organization"]["estado"])) {
				$conditions = array();
				$conditions[] = array('estado_id'=>$this->data["Organization"]["estado"]);
				$this->set('cidades', $this->Organization->Cidade->find('list',array('fields'=>array('id','nome'),'conditions'=>$conditions)));
			}
			if (isset($_SESSION['mensagem']['error'])) {
				return;
			}

			if ($this->Organization->save($this->data)) {
				$_SESSION['mensagem']['success'][] = 'Entidade cadastrada com sucesso!';
				$this->redirect('/organizations/view/'.$this->Organization->getLastInsertId());
			} else {
				$_SESSION['mensagem']['error'][] = 'Erro ao tentar cadastrar a entidade.';
			}
			$this->redirect('/organizations');
		}
	}

	function edit( $id=null) {
		if (!$id) $this->redirect('/organizations');
		$title = 'Editar entidade';
		$this->set('title',$title);
		$this->set('pageTitle',$title);
		
		$this->Organization->id = $id;
		if (empty($this->data)) {
			$this->data = $this->Organization->read();
		} else {
			// Faz o upload da foto para o banco de dados
			$logo = $this->params["data"]["Organization"]["logo"];
			if($logo["size"]>0){
				$fileData = fread(fopen($logo["tmp_name"],"r"),$logo["size"]);
				$this->params["data"]["Organization"]["logo"] = $fileData;
			}else{
				unset($this->params["data"]["Organization"]["logo"]);
			}

			// Validacao
			if($this->data["Organization"]["nome"] == null) {
				$_SESSION['mensagem']['error'][] = 'O campo Nome é obrigatório.';
			}
			if($this->data["Organization"]["estado"] == null) {
				$_SESSION['mensagem']['error'][] = 'O campo Estado é obrigatório.';
			}
			if($this->data["Organization"]["cidade_id"] == null) {
				$_SESSION['mensagem']['error'][] = 'O campo Cidade é obrigatório.';
			}
			if($this->data["Organization"]["email"] == null) {
				$_SESSION['mensagem']['error'][] = 'O campo e-mail é obrigatório.';
			}
			if($this->data["Organization"]["descricao"] == null) {
				$_SESSION['mensagem']['error'][] = 'O campo Descrição é obrigatório.';
			}
			if (!empty($this->data["Organization"]["estado"])) {
				$conditions = array();
				$conditions[] = array('estado_id'=>$this->data["Organization"]["estado"]);
				$this->set('cidades', $this->Organization->Cidade->find('list',array('fields'=>array('id','nome'),'conditions'=>$conditions)));
			}
			
			if (!(isset($_SESSION['mensagem']['error']))) {
				if ($this->Organization->save($this->data['Organization'])) {
					$_SESSION['mensagem']['success'][] = 'Entidade alterada com sucesso!';
				} else {
					$_SESSION['mensagem']['error'][] = 'Erro ao tentar alterar a entidade.';
				}
				$this->redirect('/organizations/view/'.$id);
			}
			
		}
		$organization = $this->Organization->find(array('`Organization`.id' => $id));
		$this->set('organization', $organization);
		
		/* Estado */
		$conditions = array();
		$estado_selected = null;
		if (!empty($this->data['Organization']['cidade_id'])) {
			$estado_selected = $this->data['Cidade']['estado_id'];
			$conditions[] = array('estado_id'=>$estado_selected);
		}
		$this->set('cidades', $this->Organization->Cidade->find('list', array('conditions'=>$conditions, 'fields'=>array('id','nome'))));
		$this->set('estados', $this->Organization->Cidade->Estado->find('list', array('fields'=>array('id','nome'))));
		$this->set('estado_selected',$estado_selected);
		
	}

	function delete($id) {
		if (!$id) $this->redirect('/organizations');
		if ($this->Organization->del($id)) {
			$_SESSION['mensagem']['success'][] = 'Entidade excluida com sucesso!';
		} else {
			$_SESSION['mensagem']['error'][] = 'Erro ao tentar excluir a entidade.';
		}
		$this->redirect('/organizations');
	}

	function frontIndex() {
		$organizations = $this->Organization->find('all');
		$this->set('organizations', $organizations);	
	}

	function logo($id=null) {
		$this->Organization->id = $id;
		$this->set('organization', $this->Organization->read());
	}

	function cadastro($id=null) {
		$this->set('id', $id);
		if ($id != null) {
			$this->Organization->id = $id;
			$organization = $this->Organization->read();
			$hash = md5(strrev($organization['Organization']['alias']));
			$link = "/employees/add_cadastro/".$id."/".$hash;
			$this->set("link", $link);
		}
		$title = 'Cadastrar entidade';
		$this->set('title', $title);
		$this->set('pageTitle', $title);

		$this->set('estados', $this->Organization->Cidade->Estado->find('list', array('fields'=>array('id','nome'))));
		$this->set('cidades', $this->Organization->Cidade->find('list', null));

		if (!empty($this->data)) {
			
			
			$logo = $this->params["data"]["Organization"]["logo"];
			if($logo["size"]>0){
				$fileData = fread(fopen($logo["tmp_name"],"r"),$logo["size"]);
				$this->params["data"]["Organization"]["logo"] = $fileData;
			}else{
				unset($this->params["data"]["Organization"]["logo"]);
			}

			// Validacao
			if($this->data["Organization"]["nome"] == null) {
				$_SESSION['mensagem']['error'][] = 'O campo Nome é obrigatório.';
			}
			if($this->data["Organization"]["estado"] == null) {
				$_SESSION['mensagem']['error'][] = 'O campo Estado é obrigatório.';
			}
			if($this->data["Organization"]["cidade_id"] == null) {
				$_SESSION['mensagem']['error'][] = 'O campo Cidade é obrigatório.';
			}
			if($this->data["Organization"]["email"] == null) {
				$_SESSION['mensagem']['error'][] = 'O campo e-mail é obrigatório.';
			}
			if($this->data["Organization"]["descricao"] == null) {
				$_SESSION['mensagem']['error'][] = 'O campo Descrição é obrigatório.';
			}

			if (!empty($this->data["Organization"]["estado"])) {
				$conditions = array();
				$conditions[] = array('estado_id'=>$this->data["Organization"]["estado"]);
				$this->set('cidades', $this->Organization->Cidade->find('list',array('fields'=>array('id','nome'),'conditions'=>$conditions)));
			}
			if (isset($_SESSION['mensagem']['error'])) {
				return;
			}

			if ($this->Organization->save($this->data) ) {
				$organization_id = $this->Organization->getLastInsertId();
				$this->data['Unit']['organization_id'] = $organization_id;
				
				if ($this->Organization->Unit->save($this->data['Unit'])) {
					$_SESSION['mensagem']['success'][] = 'Entidade e unidade cadastrada com sucesso!';
					$this->redirect('/organizations/cadastro/'.$this->Organization->getLastInsertId());
				} else {
					$_SESSION['mensagem']['error'][] = 'Erro ao tentar cadastrar a unidade.';
				}
				
			} else {
				$_SESSION['mensagem']['error'][] = 'Erro ao tentar cadastrar a entidade.';
			}
			//$this->redirect('/organizations/cadastro');
		}
	}
}

